home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / ugoku / src.lzh / MOVRECG / MRCGFRM.C < prev    next >
Text File  |  1994-09-09  |  17KB  |  721 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <te.h>
  6. #include <fntb.h>
  7. #include <gui.h>
  8. #include <file_dlg.h>
  9. #include <tifflib.h>
  10. #include <egb.h>
  11. #include <mos.h>
  12. #include <snd.h>
  13. //#include "video.h"
  14. #include "ugoku.h"
  15. #include "old_mov.h"
  16. #include "mrcdef.h"
  17.  
  18. extern    int        mouseSwCheck() ;
  19. extern    int        errorCheck( int ) ;
  20.  
  21. extern    char    *guiEgbPtr ;    /*    EGB é╠âÅü[âNâAâhâîâX    */
  22. extern    char    *rbuf ;            /*    Ä⌐ë╞É╗é╠âÅü[âNâAâhâîâX    */
  23. extern    char    *bbuf ;            /*    Ä⌐ë╞É╗é╠âÅü[âNâAâhâîâX    */
  24.  
  25. extern int    baseDialogId ;
  26.  
  27. int    frmDialogId[9] = -1 ;
  28. int    frmNumNumId = -1 ;
  29. int    frmMesId[37] = -1 ;
  30. int    frmSizeNumId = -1 ;
  31. int    frmNextBtnId[2] = -1 ;
  32. int    frmJmpNumId = -1 ;
  33. int    frmJmpBtnId = -1 ;
  34. int    frmSaveBtnId = -1 ;
  35. int    frmDspBtnId = -1 ;
  36. int    frmWaitNumId = -1 ;
  37. int    frmLoopNumId = -1 ;
  38. int    frmTIconId = -1 ;
  39. int    frmNumId[16] = -1 ;
  40. int    frmBtnId[4] = -1 ;
  41. int    frmCanBtnId = -1 ;
  42.  
  43. static FILE *fp;
  44. static char movFileName[100] ;
  45. static int rect[4] ;
  46. static char fileName[10][16] ;
  47. static int ch71Flag ;
  48. static int totalFrame ;
  49. static int prtFrame ;
  50. static int prtFile ;
  51. static int headPoint ;
  52. static int jumpFrame = 0 ;
  53. static int error ;
  54. static int frameSize ;
  55. static int frameWait ;
  56. static int frameLoop ;
  57. static int frameSnd[16] ;
  58.  
  59. static char tifPath[80] = '\0' ;
  60.  
  61. editFrame( namemov, fname, ch71 )
  62. char *namemov ;
  63. char fname[][16] ;
  64. int ch71 ;
  65. {
  66.     extern int r_waku_del() ;
  67.  
  68.     char head[256];
  69.     int i, j ;
  70. //    int movframe, movx0, movy0, movx1, movy1, movwait ;
  71.     int var, min, max, delta, ptColumn ;
  72. //    int prt, len, page ;
  73.  
  74. sv01:
  75.     for( i=0 ; i<80 ; i++ )
  76.     {
  77.         movFileName[i] = namemov[i] ;
  78.         if( namemov[i] == '\0' )break ;
  79.     }
  80.     for( i=0 ; i<10 ; i++ )
  81.     {
  82.         for( j=0 ; j<16 ; j++ )
  83.         {
  84.             fileName[i][j] = fname[i][j] ;
  85.             if( fileName[i][j] == '\0' )break ;
  86.         }
  87.     }
  88.     ch71Flag = ch71 ;
  89.  
  90.     for( i=0 ; i<6 ; i++ ){ /* write protect é╠ÅΩìç6ë±òKùv */ 
  91.         if( ( fp = fopen( namemov, "r+b" ) ) != NULL )goto sv0A;
  92.     }
  93.     return 2;
  94. sv0A:
  95.     fseek( fp, 0, SEEK_SET );
  96.     if( fread( head, 256, 1, fp ) < 1 ){
  97.         fclose( fp );
  98.         return 58;
  99.     }
  100.  
  101.         /* ò\Īâpâlâï âAâ^âbâ` */
  102.     MMI_SendMessage( frmDialogId[0], MM_ATTACH, 1, baseDialogId ) ;
  103.  
  104.         /* ò\Īâpâlâïé╓âfü[â^é≡ô]æù */
  105.     if( ch71Flag )
  106.         MMI_SendMessage( frmMesId[0], MM_SETMSG, 1, "âTâEâôâh  3" ) ;
  107.     else
  108.         MMI_SendMessage( frmMesId[0], MM_SETMSG, 1, "ë╣  É║" ) ;
  109.     MMI_SendMessage( frmJmpNumId, MM_GETNUMBOX, 5,
  110.                     &var, &min, &max, &delta, &ptColumn ) ;
  111.     MMI_SendMessage( frmJmpNumId, MM_SETNUMBOX, 5,
  112.                     var, min, 99999, delta, ptColumn ) ;
  113.     for( i=0 ; i<4 ; i++ )
  114.         MTL_setAtrObj( frmBtnId[i], (MS_EVMOSONL40 | MS_EVDRAGOUTL40) ) ;
  115.  
  116.     MMI_SendMessage( frmDialogId[0], MM_SHOW, 0 ) ;        /* î⌐é╣éΘ */
  117.  
  118.     rect[0] = WORD( head + 32 ); rect[1] = WORD( head + 34 );    /* ì└òW */
  119.     rect[2] = WORD( head + 36 ); rect[3] = WORD( head + 38 );
  120.     if( rect[0]==0 && rect[1]==0 && rect[2]==0 && rect[3]==0 )
  121.     {
  122.         rect[2] = 319;
  123.         rect[3] = 239;
  124.     }
  125.     frame_graph_init0( rect[0],rect[1],rect[2],rect[3] ) ;
  126.     prtFile = 256; prtFrame = -1; totalFrame = DWORD( head + 12 );
  127.     error = editFrameJump( 1 ) ;
  128.     EGB_displayPage(guiEgbPtr,0,3);
  129.     r_waku_clear3( rect[2]-rect[0]+1, rect[3]-rect[1]+1, 1 ) ;
  130.  
  131.     if( error == NOERR )
  132.     {
  133.         SND_elevol_mute( 0x03 ) ;
  134.         MMI_ExecSystem() ;        /* Dialogò\Īé╓ÑÑÑâCâxâôâgâïü[âv */
  135.     }
  136.  
  137.     SND_elevol_mute( 0x00 ) ;
  138.     if( error )
  139.         errorCheck( error ) ;
  140.  
  141.     r_waku_del() ;
  142.     EGB_displayPage(guiEgbPtr,0,1);
  143.     MMI_SendMessage( frmDialogId[0], MM_ERASE, 0 ) ;
  144.     MMI_SendMessage( frmDialogId[0], MM_DETACH, 0 ) ;
  145.  
  146.     fclose( fp ) ;
  147.     return NOERR ;
  148. }
  149.  
  150. /*    initDataIRCFRM:frmNextBtnId[0]:MJ_DBUTTONL40é╠î─é╤Åoé╡è╓Éö    */
  151. /*    initDataIRCFRM:frmNextBtnId[1]:MJ_DBUTTONL40é╠î─é╤Åoé╡è╓Éö    */
  152. int    frmNextFunc(kobj, messId, argc, pev, trigger)
  153. int        kobj ;
  154. int        messId ;
  155. int        argc ;
  156. EVENT    *pev ;
  157. int        trigger ;
  158. {
  159.     int i ;
  160.  
  161.     SND_pcm_play_stop( 71 );
  162.     if( kobj == frmNextBtnId[0] )
  163.     {
  164.         WORD( bbuf+12 ) = frameWait ;
  165.         WORD( bbuf+14 ) = frameLoop ;
  166.         for( i=0 ; i<16 ; i++ )
  167.             BYTE( bbuf+16 + i ) = frameSnd[i] ;
  168.         fseek( fp, headPoint, SEEK_SET );
  169.         fwrite( bbuf, 32, 1, fp );
  170.         fseek( fp, prtFile, SEEK_SET );
  171.     }
  172.  
  173.     if( prtFrame >= (totalFrame-1) )
  174.     {
  175.         prtFile = 256 ;
  176.         prtFrame = -1 ;
  177.         fseek( fp, 256, SEEK_SET );
  178.     }
  179.     error = editFrameJump( 1 ) ;
  180.     if( error )
  181.         MMI_SetHaltFlag( TRUE ) ;
  182.     return NOERR ;
  183. }
  184.  
  185. /*    initDataIRCFRM:frmJmpNumId:MJ_NUMBOXL40é╠î─é╤Åoé╡è╓Éö    */
  186. /*    initDataIRCFRM:frmJmpBtnId:MJ_DBUTTONL40é╠î─é╤Åoé╡è╓Éö    */
  187. int    frmJmpFunc(kobj, messId, argc, pev, trigger)
  188. int        kobj ;
  189. int        messId ;
  190. int        argc ;
  191. EVENT    *pev ;
  192. int        trigger ;
  193. {
  194.     if( kobj == frmJmpNumId )
  195.     {
  196.         int    var, min, max, delta, ptColumn ;
  197.  
  198.         MMI_SendMessage( kobj, MM_GETNUMBOX, 5,
  199.                         &var, &min, &max, &delta, &ptColumn ) ;
  200.         jumpFrame = var ;
  201.     }
  202.     else if( kobj == frmJmpBtnId )
  203.     {
  204.         prtFile = 256 ;
  205.         prtFrame = -1 ;
  206.         fseek( fp, 256, SEEK_SET );
  207.         error = editFrameJump( jumpFrame + 1 ) ;
  208.         if( error )
  209.             MMI_SetHaltFlag( TRUE ) ;
  210.     }
  211.     return NOERR ;
  212. }
  213.  
  214. /*    initDataIRCFRM:frmSaveBtnId:MJ_DBUTTONL40é╠î─é╤Åoé╡è╓Éö    */
  215. int    frmSaveFunc(kobj, messId, argc, pev, trigger)
  216. int        kobj ;
  217. int        messId ;
  218. int        argc ;
  219. EVENT    *pev ;
  220. int        trigger ;
  221. {
  222.     extern int fileSelector( char *, char **, char *, char *, char * );
  223.     extern int file_kakuchousi_set( char *, char *, char * ) ;
  224.  
  225.     char *ExtStr[] = { "*.TIF", NULL } ;
  226.     char path[100] ;
  227.     int i, ret, error ;
  228.  
  229.     /* âüâjâàü[é╞â{â^âôé≡Ägéªé╚éóéµéñé╔é╖éΘ */
  230.     MTL_setAtrObj( frmDialogId[0], MS_DSPONLYL40 ) ;
  231.  
  232.     error = 0 ;
  233.     ret = fileSelector(tifPath, ExtStr,
  234.                                  "éséhéeéeâZü[âu", "Ä└  ìs", "ĵ  Å┴");
  235.     if(    ret )
  236.         goto v10 ;
  237.     else
  238.     {
  239.         /* name , kakuchou[ègÆúÄq(.***)] ü¿ fullname = name + kakuchou */
  240.         error = file_kakuchousi_set( path, tifPath, ".TIF" ) ;
  241.         if( error == NOERR )
  242.         {
  243.             for( i=0 ; i<80 ; i++ )
  244.                 tifPath[i] = path[i] ;
  245.         }
  246.     }
  247.  
  248.     if( error == NOERR )
  249.     {
  250.         error = saveTif( tifPath ) ;
  251.     }
  252.  
  253. v10:
  254.     /* âüâjâàü[é╞â{â^âôé≡ÄgéªéΘéµéñé╔û▀é╖ */
  255.     MTL_resetAtrObj( frmDialogId[0], (~MS_DSPONLYL40) ) ;
  256.     if( error )
  257.         errorCheck( error ) ;
  258.     return NOERR ;
  259. }
  260.  
  261. saveTif( fullname )
  262. char *fullname;
  263. {
  264.     FILE *fps;
  265.     int size,i;
  266.     int ax1, ay1, ax2, ay2, temp;
  267.     char para[64] ;
  268.  
  269. struct    TIFF1{            /* 10Byte */
  270.     int id, ifd1;
  271.     short offset;
  272.     } head1[] = { 0x2a4949, 8, 15 };
  273. struct    TIFF2{        /* 192Byte */
  274.     short tag, type;
  275.     int length, data;
  276.     } head2[] = 
  277.         {    { 0x0ff, 3, 1,     1 },
  278.             { 0x100, 3, 1,   320 },
  279.             { 0x101, 3, 1,   240 },
  280.             { 0x102, 3, 1,    16 },
  281.             { 0x103, 3, 1,     1 },
  282.             { 0x106, 3, 1,     1 },
  283.             { 0x10a, 3, 1,     1 },
  284.             { 0x111, 4, 1, 0x200 },
  285.             { 0x115, 3, 1,     1 },
  286.             { 0x116, 4, 1,  0xf0 },
  287.             { 0x117, 4, 1, 320*240*2 },
  288.             { 0x119, 3, 1, 32767 },
  289.             { 0x11a, 5, 1, 0x1f0 },
  290.             { 0x11b, 5, 1, 0x1f8 },
  291.             { 0x11c, 3, 1,     1 },
  292.             {     0, 0, 0,     0 }
  293.         };
  294. char head3[294];        /* 294Byte */
  295. int head4[] = { 0x4b, 2, 0x4b, 2 };    /* 16Byte */
  296.  
  297.     ax1 = 0; ay1 = 0; ax2 = 319; ay2 = 239;
  298.     size = ( ax2 - ax1 + 1 )*( ay2 - ay1 + 1 )*2;
  299.     DWORD( ((char *)head2)+0x14 ) = ax2 - ax1 + 1;
  300.     DWORD( ((char *)head2)+0x20 ) = ay2 - ay1 + 1;
  301.     DWORD( ((char *)head2)+128 ) = size;
  302.     for( i=0 ; i<294 ; i++ )head3[i] = (char)0;
  303.     for( i=0 ; i<6 ; i++ ){       /* disk write protect é╠ÅΩìç6ë±òKùv */ 
  304.         if( ( fps = fopen( fullname, "wb" ) ) != NULL )goto save1;
  305.     }
  306.     return 2;
  307. save1:
  308.     EGB_writePage(guiEgbPtr,1);
  309.     DWORD( para + 0 ) = (unsigned int)rbuf ;
  310.     WORD(  para + 4 ) = 0x14 ;
  311.     WORD(  para + 6 ) = ax1 ;
  312.     WORD(  para + 8 ) = ay1 ;
  313.     WORD(  para + 10) = ax2 ;
  314.     WORD(  para + 12) = ay2 ;
  315.     EGB_getBlock( guiEgbPtr, para ) ;
  316.     EGB_writePage(guiEgbPtr,0);
  317.  
  318.     fwrite( (char *)head1, 10, 1, fps );
  319.     fwrite( (char *)head2, 192, 1, fps );
  320.     fwrite( (char *)head3, 294, 1, fps );
  321.     fwrite( (char *)head4, 16, 1, fps );
  322.     fwrite( rbuf, size, 1, fps );
  323.     temp = ferror( fps );
  324.     fclose( fps );
  325.     if( temp ){
  326.         remove( fullname );        /* disk full */
  327.         return 2;
  328.     }
  329.     return 0;
  330. }
  331.  
  332. /*    initDataIRCFRM:frmDspBtnId:MJ_DBUTTONL40é╠î─é╤Åoé╡è╓Éö    */
  333. int    frmDspFunc(kobj, messId, argc, pev, trigger)
  334. int        kobj ;
  335. int        messId ;